package com.haixiaoke.saas.common.annotation;

import com.haixiaoke.saas.common.enums.DefaultEnum;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 字典转换注解
 *
 * @author zhiping
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)

public @interface Dict {


    /**
     * 字典后缀
     */
    String suffix() default "Name";

    /**
     * 本地字典
     * 格式如: 1:启用;0:禁用
     */
    String localDict() default "";

    /**
     * 数据库字典
     * 例子: databaseDictType="sys_user_sex"
     * sysDictTypeServiceImpl.selectDictDataByType("sys_user_sex")
     */
    String databaseDictType() default "";

    /**
     * 把表数据作为字典
     * CustomDictMapper.selectDict(tableName, valueField, labelField)
     */
    String tableName() default "";

    String valueField() default "";

    String labelField() default "";

    /**
     * 枚举
     * 如果枚举是 MALE(1,"男"),FEMALE(2,"女"), 则需要填写 valueField 和 labelField
     * 如果枚举是 INSERT,UPDATE 以枚举的 ordinal 为 value, name 为 label
     */
    Class<? extends Enum<?>> enumClass() default DefaultEnum.class;

}
